package com.xique.door.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.bean.domain.BuildHouse;
import com.xique.door.bean.domain.BuildHouseUser;
import com.xique.door.bean.domain.User;
import com.xique.door.bean.request.buildHouse.BuildHouseBandUserRequest;
import com.xique.door.bean.request.buildHouse.BuildHouseDeleteUserRequest;
import com.xique.door.bean.request.user.UserAddHouseRequest;
import com.xique.door.bean.request.user.UserSelectRequest;
import com.xique.door.bean.vo.user.UserHouseVo;

import java.util.List;

/**
 * @author: caogq
 * @Date: 2022/1/19 14:47
 * @Description: 房屋和用户的处理
 */
public interface IBuildHouseUserBizService {
    /**
     * @description:  房屋绑定住户
     * @author caogq
     * @date: 2022/1/19 15:57
     * @Param
     */
    public AjaxResult addHouseUser(BuildHouseBandUserRequest request);

    public AjaxResult userAddHouses(User user,UserAddHouseRequest request);
    /**
     * @description:  房屋删除住户
     * @author caogq
     * @date: 2022/1/19 15:57
     * @Param
     */
    public AjaxResult deleteHouseUser(BuildHouseDeleteUserRequest request);

    /**
     * @description:  查询房屋的业主信息
     * @author caogq
     * @date: 2022/1/19 15:57
     * @Param
     */
    public User selectHouseOwner(Long houseId);

    /**
     * @description: 查询已绑定的房屋信息
     * @author caogq
     * @date: 2022/1/27 10:19
     * @Param
     */
    public List<UserHouseVo> selectBindHouseList(Long userId);

    public List<BuildHouse> selectUnBindHouseList(UserSelectRequest request);

    /**
     * @description: 查询未绑定的房屋信息
     * @author caogq
     * @date: 2022/1/27 10:19
     * @Param
     */
    public List<UserHouseVo> convertUnBindHouseList(List<BuildHouse> buildHouses);

    /**
     * @description: 绑定房屋
     * @author caogq
     * @date: 2022/1/27 10:19
     * @Param
     */
    AjaxResult bindHouse(BuildHouseUser buildHouseUser);
    /**
     * @description: 解绑房屋
     * @author caogq
     * @date: 2022/1/27 10:19
     * @Param
     */
    AjaxResult unBindHouse(BuildHouseUser buildHouseUser);

    AjaxResult bindHouseV2(BuildHouseUser buildHouseUser);

    AjaxResult unBindHouseV2(BuildHouseUser buildHouseUser);

}
